package cz.stv.kucera_tomas_sen.auto;
import cz.stv.pecinovsky.správceplátna.*;
import cz.stv.pecinovsky.utility.*;

/* Soubor je ulozen v kodovani UTF-8.
 * Kontrola kódování: Příliš žluťoučký kůň úpěl ďábelské ódy. */


import org.junit.After;
import org.junit.Before;
import org.junit.Test;


import static org.junit.Assert.*;



/*******************************************************************************
 * Testovací třída {@code AutoJTest} slouží ke komplexnímu otestování
 * třídy {@link AutoJTest}.
 *
 * @author    jméno autora
 * @version   0.00.000
 */
public class AutoTest
{
    private SprávcePlátna SP;
    private AutoJ autoJ;
    private AutoS autoS;
    private AutoV autoV;
    private AutoZ autoZ;
    private Přesouvač přesouva1;
    private Kompresor kompreso1;

    //== KONSTANTNÍ ATRIBUTY TŘÍDY =============================================
    //== PROMĚNNÉ ATRIBUTY TŘÍDY ===============================================
    //== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ====================
    //== KONSTANTNÍ ATRIBUTY INSTANCÍ ==========================================
    //== PROMĚNNÉ ATRIBUTY INSTANCÍ ============================================
    //== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ====================================
    //== OSTATNÍ NESOUKROMÉ METODY TŘÍDY =======================================

    //##########################################################################
    //== KONSTRUKTORY A TOVÁRNÍ METODY =========================================
    //-- Testovací třída vystačí s prázdným implicitním konstruktorem ----------
    //== PŘÍPRAVA A ÚKLID PŘÍPRAVKU ============================================

    /***************************************************************************
     * Inicializace předcházející spuštění každého testu a připravující tzv.
     * přípravek (fixture), což je sada objektů, s nimiž budou testy pracovat.
     */
    @Before
    public void setUp()
    {
        SP = SprávcePlátna.getInstance();
        autoJ = new AutoJ( 200, 0, 100, 100 );
        autoS = new AutoS( 0, 200, 100, 100 );
        autoV = new AutoV( 0, 0, 100, 100 );
        autoZ = new AutoZ( 200, 200, 100, 100 );
        přesouva1 = new Přesouvač();
        kompreso1 = new Kompresor();
        SP.přidej(autoJ);
        SP.přidej(autoS);
        SP.přidej(autoV);
        SP.přidej(autoZ);
        IO.zpráva("ok");
    }


    /***************************************************************************
     * Úklid po testu - tato metoda se spustí po vykonání každého testu.
     */
    @After
    public void tearDown()
    {
    }



    //== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =================================
    //== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ====================================
    //== SOUKROMÉ A POMOCNÉ METODY TŘÍDY =======================================
    //== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ====================================
    //== INTERNÍ DATOVÉ TYPY ===================================================
    //== VLASTNÍ TESTY =========================================================
    //
    //     /********************************************************************
    //      *
    //      */
    //     @Test
    //     public void testXxx()
    //     {
    //     }

    @Test
    public void testNafukování()
    {
        kompreso1.nafoukniNa(150, 150, autoV);
    }

    @Test
    public void testNafukování2()
    {
        kompreso1.nafoukniNa(120, 120, autoV, Směr8.SEVER);
        kompreso1.nafoukniNa(150, 150, autoV, Směr8.JIH);
    }

    @Test
    public void kopie2()
    {
        //AutoJ auto2 = (AutoJ)autoV.kopie();
        //assertNotSame( "Chyba klonování!", autoV, auto2);
        //autoV.setPozice(0, 0);
        //auto2.nakresli();
        //auto2.setPozice(150, 150);
    }

    @Test
    public void kopie1()
    {
        //AutoJ auto2 = (AutoJ)autoV.kopie();
        //assertNotSame(autoV, auto2);
        //auto2.setPozice(0, 0);
    }

    @Test
    public void blikejR()
    {
        autoV.blikejR();
    }

    @Test
    public void blikejL()
    {
        autoV.blikejL();
    }


    @Test
    public void NastavBarvu()
    {
        autoV.setBarva(Barva.ZELENÁ);
    }

    @Test
    public void testVpred()
    {
        autoJ.vpred( 100);
        autoS.vpred( 100);
        autoV.vpred( 100);
        autoZ.vpred( 100);
        IO.čekej(1000 );
        autoJ.vpred( 100);
        autoS.vpred( 100);
        autoV.vpred( 100);
        autoZ.vpred( 100);
    }
}













